home *** CD-ROM | disk | FTP | other *** search
/ Gamers Arsenal 1 / Gamers Arsenal (Arsenal Computer).iso / doom / dmspcs10.txt < prev    next >
Text File  |  1994-01-24  |  22KB  |  589 lines

  1. -----------------------------------------------------------------------------
  2.        T H E   U N O F F I C I A L   *-D-*-*-O-*-*-O-*-*-M-*   S P E C S
  3.                Release v1.0 - January 21, 1994
  4.                Written by: roggerffff@aol.com
  5.         Released by: Hank Leukart (ap641@cleveland.freenet.edu)
  6.        "DOOM: Where the sanest place... is behind a trigger."
  7.        "DOOM: Such mayhem the likes of which have never
  8.           been witnessed in this particular dimension!"
  9. -----------------------------------------------------------------------------
  10.  
  11. ----------
  12. DISCLAIMER
  13. ----------
  14.  
  15.     These specs are to aid in informing the public about the game DOOM, 
  16. by id Software.  In no way should this promote your killing yourself, killing 
  17. others, or killing in any other fashion.  Additionally, Hank Leukart nor the 
  18. author claim ANY responsibility regarding ANY illegal activity concerning 
  19. this file, or indirectly related to this file.  The information contained in 
  20. this file only reflects id Software indirectly, and questioning id Software
  21. regarding any information in this file is not recommended.
  22.     
  23. ---------        
  24. COPYRIGHT
  25. ---------
  26.  
  27.     You may NOT distribute this work by any non-electronic media,
  28. including but not limited to books, newsletters, magazines, manuals,
  29. catalogs, and speech.  You may NOT distribute this work in electronic
  30. magazines, or within computer software without prior written explicit
  31. permission.  These rights are temporary and revocable upon written, oral,
  32. or other notice by Hank Leukart.  This copyright notice shall be governed
  33. by the laws of the state of Ohio.
  34.     If you would like additional rights beyond those granted above,
  35. write to the distributor at "ap641@cleveland.freenet.edu" on the Internet.
  36.  
  37. ------------
  38. INTRODUCTION
  39. ------------
  40.  
  41.     Here are the long awaited unofficial specs for DOOM.  These specs
  42. should be used for creating add-on software for the game.  I would like to 
  43. request that these specs be used in making utilities that ONLY work on the 
  44. registered version of DOOM.  You may not use these for modifing, translating,
  45. disassembling, decompiling, reverse engineering, or creating derivative works
  46. based upon DOOM.  Notwithstanding the foregoing, you may create a map editor, modify maps and 
  47. make your own maps (collectively referenced as the "Permitted Derivative 
  48. Works") for the Software.  You may not sell or distribute any Permitted 
  49. Derivative Works but you may exchange the Permitted Derivative Works at no 
  50. charge amongst other end-users.
  51.     I do not understand much of what is contained in this file, so if
  52. you have any questions about the information, write to "roggerffff@aol.com"
  53. on the Internet.  If you would like to request a copy of this file, or have
  54. any questions about its distribution, write to me, Hank Leukart, at
  55. "ap641@cleveland.freenet.edu" on the Internet.
  56.  
  57. --------
  58. CONTENTS
  59. --------
  60.  
  61. [1] Basics
  62. [2] Directory Overview
  63. [3] The Maps, The Levels
  64.     [3-1] ExMy
  65.     [3-2] Things
  66.     [3-3] Thing Types
  67.     [3-4] Linedefs
  68.     [3-5] Sidedefs
  69.     [3-6] Vertexes
  70.     [3-7] Segs
  71.     [3-8] Ssectors
  72.     [3-9] Nodes
  73.     [3-10] Sectors
  74.     [3-11] Reject
  75.     [3-12] Blockmap
  76. [4] Texture1
  77. [5] Pnames
  78. [6] Pictures
  79. [7] Floor and Ceiling Textures
  80.  
  81. -------------------
  82. CHAPTER [1]: Basics
  83. -------------------
  84.  
  85. The first twelve bytes of a Doom *.WAD file (in the shareware version it is
  86. DOOM1.WAD, the registered version's is DOOM.WAD) are as follows:
  87.  
  88. Bytes 0 to 3 - contain the ASCII letters "IWAD" or possibly "PWAD"
  89. Bytes 4 to 7 - contain a long integer which is the number of entries in the
  90. "directory"
  91. Bytes 8 to 11 - contain a pointer to the first byte of the "directory"
  92.  
  93. (Bytes 12 to the start of the directory contain object data)
  94.  
  95. The directory referred to is a list, located at the end of the WAD file,
  96. which contains the pointers, lengths, and names of all the "objects" in the
  97. WAD file. "Objects" means data structures such as item pictures, enemies'
  98. pictures (frames), floor and ceiling textures, wall textures, songs, sound
  99. effects, map data, and many others.
  100.  
  101. For example, the first 12 bytes of the shareware DOOM1.WAD file are:
  102.  
  103. 49 57 41 44 f6 04 00 00 6b e5 3f 00
  104.  
  105. This is "IWAD", then 4f6 hex (=1270 decimal) for # of directory entries, then
  106. 3fe56b (=4187500 decimal) for the first byte of the directory.
  107.  
  108. Each directory entry is 16 bytes long (10 hex), arranged this way:
  109.  
  110. First four bytes: pointer to start of object (a long integer)
  111. Next four bytes: length of object (another long integer)
  112. Last eight bytes: name of object, ending with 00s if not eight bytes.
  113.  
  114. -------------------------------
  115. CHAPTER [2]: Directory Overview
  116. -------------------------------
  117.  
  118. PLAYPAL  is the palette used while playing Doom.
  119. COLORMAP is something to do with the palette also.
  120. ENDOOM   is the text messages displayed at the end of each episode.
  121. DEMO[x]  are the demos which will play if you just sit and watch.
  122.  
  123. E1M1     etc (to E1M9 or E3M9), along with its 10 subsequent entries, defines
  124. the map data for a single level or "map". More on this below.
  125.  
  126. TEXTURE1 is a list of wall type names, and their composition data.
  127. PNAMES   is the list of wall textures that are used to make up the entries in
  128. TEXTURE1.
  129.  
  130. GENMIDI  has some instrument names in it, and...?
  131. DMXGUS   has to do with Gravis Ultra Sound, I suppose
  132.  
  133. D_xxxxxx is a song
  134. DP_xxxxx DP and DS come in pairs and are
  135. DS_xxxxx   probably the sound effects
  136.  
  137. HELP1    These four are the full screen
  138. HELP2      pictures displayed as help
  139. TITLEPIC   screens, title screen, and
  140. CREDITS    credits screen.
  141.  
  142. AMMNUMx  where x is 0-9, means what?
  143. STxxxxxx ?
  144. M_xxxxxx ?
  145. BRDR_xxx ?
  146. WIxxxxxx ?
  147.  
  148. these objects "bracket" a collection of objects:
  149.  
  150. S_START  has 0 length and is right before the first "picture"
  151. S_END      is immediately after the last "picture"
  152. P_START  
  153. P1_START before the first wall texture
  154. P1_END   after the last wall texture
  155. P_END
  156. F_START
  157. F1_START before the first floor texture
  158. F1_END   after the last
  159. F_END
  160.  
  161. Detailed info on specific objects follows.
  162.  
  163. ---------------------------------
  164. CHAPTER [3]: The Maps, The Levels
  165. ---------------------------------
  166.  
  167. Each level has eleven objects/directory entries: E[x]M[y] (where x is a
  168. single digit 1-3 for the episode # and y is 1-9 for the map/level #), THINGS,
  169. LINEDEFS, SIDEDEFS, VERTEXES, SEGS, SSECTORS, NODES, SECTORS, REJECT,
  170. BLOCKMAP.
  171.  
  172. [3-1]: ExMy
  173. ===========
  174. This is just the name object for a (single) level, and has zero length. The
  175. next 10 entries in the directory after one of these must be
  176. THINGS...BLOCKMAP.
  177.  
  178. [3-2]: Things
  179. =============
  180. Each thing is ten bytes, consisting of five (integer) fields:
  181.  
  182. 1. bytes 0-1   X coordinate of thing
  183. 2. bytes 2-3   Y coordinate of thing
  184.   
  185. (each level has a different "range" to its coordinates. On E1M1, X ranges
  186. from (c.) -288 to +3440, and Y ranges from (c.) -4832 to -2144.
  187. On the automap within the game, with the grid on (press `G'), the lines are
  188. hex 80 (decimal 128) apart, two lines = hex 100, dec 256
  189.  
  190. 3. bytes 4-5   angle the thing faces, 0 is west (according to automap). May
  191. be 0,45,90,135,180,225,270,315. Only important for enemies.
  192.  
  193. 4. bytes 6-7   type of thing, see next subsection
  194. 5. bytes 8-9   skill levels it is present on, and ...?
  195.  
  196. The skill level is done thus: 
  197.  
  198. bit 0  is set if the THING is present at skill 1 and 2
  199. bit 1  is set if the THING is on skill 3 (hurt me plenty)
  200. bit 2  is set if the THING is on skill 4 (ultra-violence)
  201. bit 3  is for what? I don't know yet...
  202. bit 4  makes the THING only appear in the commercial version.
  203. bits 5-15 are never set in any THING in the shareware version, and have no
  204.        effect as far as I can tell.
  205.  
  206. The skill settings are most used with the ENEMIES, of course...the most
  207. common skill level settings are hex 07/0f (on all skills), 06/0e (on skill
  208. 3-4), and 04/0c (only on skill 4). However, you can twist the purpose and
  209. have ones like 1 so that a player at the low skill levels has to fight more
  210. guys! Then all skill levels would be "tough"!
  211.  
  212. [3-3]: Thing Types
  213. ==================
  214. Bytes 6-7 of each thing are an integer which means the thing at that x,y
  215. location is one of these:
  216.  
  217. (this list needs updating to include the registered version)
  218.  
  219. 1       player 1 start
  220. 2       player 2 start
  221. 3       player 3 start
  222. 4       player 4 start
  223. 5       Blue keycard
  224. 6       Yellow keycard
  225. 7       error message `invalid frame 33:0', this item is not in the shareware
  226. version.
  227. 8       Backpack
  228. 9       SARGE = black dudes with shotguns
  229. 10      dead guy, bloody mess
  230. 11      ?? something that doesn't display (mystery object #1)
  231. 12      dead, bloody mess 2
  232. 13      Red keycard
  233. 14      ?? doesn't display anything (mystery object #2)
  234. 15      green dead guy (one of your pals...?)
  235. 24      pool of blood
  236. 34      candle
  237. 35      candelabra
  238. 46      flame stick
  239. 48      column
  240. 58      SPECTRE = invisible demon
  241.  
  242. 2001    shotgun
  243. 2002    chaingun
  244. 2003    rocket launcher
  245. 2004    `frame 70:0' prob. the PLASMA GUN; not in shareware
  246. 2005    chainsaw
  247. 2006    `frame 66:0' prob. th BFG9000; not in shareware
  248. 2007    ammo clip
  249. 2008    shotgun shells
  250. 2010    1 rocket
  251. 2011    stimpack
  252. 2012    med kit
  253. 2013    soulsphere (blue, +100% health)
  254. 2014    potion +1% health
  255. 2015    helmet +1% armor
  256. 2018    green armor 100%
  257. 2019    blue armor 200%
  258. 2022    `frame 51:0' prob. invulnerability or beserk strength
  259. 2023    `frame 52:0' prob. the other one
  260. 2024    blur sphere
  261. 2025    radiation suit
  262. 2026    computer map
  263. 2028    floor lamp
  264. 2035    barrel
  265. 2045    lite-amp goggles
  266. 2046    rockets box
  267. 2048    ammo box
  268. 2049    shells box
  269.  
  270. 3001    IMP = brown fireball chucker
  271. 3002    DEMON = pink bull
  272. 3003    BOSS GUY = throws green fireballs
  273. 3004    TROOP = regular loser
  274. 3005    `frame 30:0' probably Lost Soul or Cacodemon
  275. 3006    `frame 32:32768' probably the other
  276.  
  277. One cool effect: for one-player mode, change one (or more) of the other
  278. player things (2,3,4) to 1. Then when you play, there will be a green guy
  279. standing there, your alter-ego! If you shoot him, you take damage!!!
  280.  
  281. [3-4]: Linedefs
  282. ===============
  283. Each linedef represents a line from one of the VERTEXES to another, and each
  284. has 7 (integer) fields:
  285.  
  286. 1. from the VERTEX with this number (the first vertex is 0)
  287. 2. to the VERTEX with this number (31 is the 32nd vertex)
  288. 3. bit 0 set means you can't go through it, others like 28,12,17 = ?
  289. 4. 1 is for a door, 48 means it is "animated" like the armor pedestal at the
  290. very start of E1M1, 11 is for the switch that ends the level, many
  291. others...sublist in the making...? 
  292. 5. is a "trigger" number which ties crossing this line to the SECTOR with
  293. this same number as its last field (I think...)
  294. 6. SIDEDEF one (always present, since this line adjoins at least 1 SECTOR)
  295. 7. SIDEDEF two, if this line adjoins 2 SECTORS
  296.  
  297. [3-5]: Sidedefs
  298. ===============
  299. A sidedef is a definition of what wall meta-textures to draw along the
  300. various LINEDEFS, and a group of sidedefs define a SECTOR.
  301.  
  302. There will be one sidedef for a line that borders only one sector, since it
  303. is not necessary to define what the doom player would see from the "other"
  304. side of that line because the doom player can't go there. The doom player can
  305. only "go" where there is a sector (unless you use the no clipping cheat,
  306. which will cause the screen to freak out if you go "outside" to a non-sector
  307. area).
  308.  
  309. Each SIDEDEF has 2 (integer) fields, then 3 (8-byte string) fields, then a
  310. final (integer) field:
  311.  
  312. 1. X offset from the top-left corner to begin pasting the appropriate wall
  313. texture onto the walls "space"
  314. 2. Y offset from the top-left to begin "paste"
  315. 3. name of wall type 1 = the part "above" the juncture with a lower ceiling
  316. of an adjacent SECTOR
  317. 4. name of wall type 2 = the part "below" a juncture with a higher floored
  318. adjacent SECTOR
  319. 5. name of wall type 3 = the regular part
  320. 6. SECTOR that this sidedef "helps to surround"
  321.  
  322. the wall type fields will be "-" if nothing, thus the sidedef for looking IN
  323. a "window" is "-" "-" "-". A typical sidedef is "-" "-" "STARTAN3"
  324.  
  325. the wall names are from the TEXTURE1 object, which defines how to draw that
  326. wall. the names in the DIRECTORY are not directly used, they are referenced
  327. through PNAMES.
  328.  
  329. [3-6]: Vertexes
  330. ===============
  331. These are the beginnings and ends for LINEDEFS, each has 2 (integer) fields:
  332.  
  333. 1. x coordinate
  334. 2. y coordinate
  335.  
  336. [3-7]: Segs
  337. ===========
  338. Each SEG has 6 (integer) fields
  339.  
  340. 1. from vertex
  341. 2. to vertex
  342. 3. angle 0= east 16384=north -16384=south -32768=west
  343. 4. linedef that this seg goes along
  344. 5. either 0 or 1, why ???
  345. 6. ???
  346.  
  347. (SEGS, SSECTORS, and NODES are a real bear. I haven't figured them out
  348. yet...)
  349.  
  350. [3-8]: Ssectors
  351. ===============
  352. each SSECTOR has 2 (integer) fields
  353.  
  354. 1. # of SEGS in this SSECTOR
  355. 2. starting with this SEG #
  356.  
  357. [3-9]: Nodes
  358. ============
  359. the NODES object is (# of SSECTORS -1) * 14 bytes long, but I don't see the
  360. connection.
  361.  
  362. [3-10]: Sectors
  363. ===============
  364. A SECTOR is a horiontal (east-west and north-south) area of the map where a
  365. floor height and ceiling height is defined, so a doom player may go there.
  366. Any change in floor or ceiling "altitude" or texture requires a new SECTOR
  367. (and therefor a separating LINEDEF and SIDEDEFS).
  368.  
  369. Each is 2 (integer) fields, 2 (8-byte string) fields, then 3 (integer)
  370. fields:
  371.  
  372. 1. floor is at this "altitude" for this sector
  373. 2. ceiling altitude
  374.  
  375. the altitudes range from -264 to 264. a difference of 28 between the floor
  376. heights of two adjacent sectors is passable (upwards), but a difference of 32
  377. is "too high". the player may fall any amount.
  378.  
  379. 3. name of floor texture, from the DIRECTORY
  380. 4. name of ceiling texture, from DIRECTORY
  381.  
  382. (note: all the ones listed in the DIRECTORY work as either floors or
  383. ceilings)
  384.  
  385. 5. brightness of this sector 0=total dark 255=maximum bright
  386. 6. special sector: 
  387.     0 is normal
  388.     1 light level "blinks" randomly
  389.     2 light quickly pulsates
  390.     3 blink
  391.     4 pulsates AND take 20% health hit when stand here
  392.     5 -10% health
  393.     6 UNKNOWN SPECIAL SECTOR, causes program to exit to DOS
  394.     7 -5% (this is the typical NUKAGE green stuff floor)
  395.     8 pulsating light
  396.     9 SECRET (player must walk into this sector to get credit for discovering
  397. this "secret")
  398.     10 ?
  399.     11 -20% health
  400.     12 blink
  401.     13 quick pulsate
  402.     14 ?
  403.     15 UNKNOWN SPECIAL SECTOR, do not use
  404.     16 -20%
  405.  
  406. 7. is a "trigger" number corresponding to a certain LINEDEF with the same
  407. "trigger" number. When that LINEDEF is crossed, something happens to this
  408. SECTOR - it goes up or down, etc...
  409.  
  410. [3-11]: Reject
  411. ==============
  412. The purpose of this one eludes me so far
  413.  
  414. [3-12]: Blockmap
  415. ================
  416. This is to aid in the implementation of the automap, probably. All its fields
  417. are integers.
  418. The whole level is cut into "blocks", each hex 80 wide (the grid lines in the
  419. automap correspond to these blocks).
  420.  
  421. The first two integers are XORIGIN and YORIGIN, which specify the coordinates
  422. of the bottom-left corner of the bottom-left (southwest) block.
  423.  
  424. Then come XBLOCKS and YBLOCKS, which specify how many "blocks" there are in
  425. the X and Y directions. XBLOCKS is the number of COLUMNS, YBLOCKS is the
  426. number of ROWS.
  427.  
  428. Then come (ROWS * COLUMNS) integers which are pointers to the offset within
  429. the BLOCKMAP object for that "block". The blocks go right (east) and up
  430. (north). The first block is at row 0, column 0; the next at row 0, column 1;
  431. if there are 34 columns like on the first level, the 35th block is row 1,
  432. column 0, etc.
  433.  
  434. After all the pointers, come the block lists. Each blocklist describes the
  435. numbers of all the LINEDEFS which are partially or wholly "in" that block.
  436.  
  437. An "empty" block is two integers: 0 and then -1.
  438.  
  439. A non-empty block will go something like: 0 330 331 333 -1. This means that
  440. LINEDEFS 330, 331, and 333 are "in" that block. Part of each of those line
  441. segments lies within the (hex 80 by 80) boundaries of that block.
  442. What about the block that has LINEDEF 0? It goes: 0 0 ... etc ... -1.
  443.  
  444. That's it. (I'm not sure how linedefs are handled when they lie entirely
  445. along a "border" between blocks)
  446.  
  447. THIS CONCLUDES THE SECTION ON THE LEVELS.
  448.  
  449. ---------------------
  450. CHAPTER [4]: Texture1
  451. ---------------------
  452.  
  453. This object contains a list of the wall names used in the various SIDEDEFS
  454. sections of the level data. Each wall name actually references a
  455. meta-structure, defined in this list.
  456.  
  457. Each entry in this list begins with a 8-byte "name" field, but then each
  458. entry has variable length.
  459.  
  460. All the remaining fields of an entry are integers.
  461.  
  462. The second and third fields always 0 and 0 that I've seen so far, so the
  463. purpose is unknown.
  464.  
  465. The fourth and fifth fields define the width in columns and height in rows,
  466. for this entry, thus defining a "space" (usually 32 by 128 or 64 by 72 or
  467. etc...) in which individual wall textures are "placed" to form the overall
  468. picture. This is done because there are some parts that are used in several
  469. different walls, like computer screens, etc.
  470.  
  471. The sixth and seventh fields are 0 and 0, purpose unknown
  472.  
  473. The eigth field is the number of 5-integer "sets" that follow. Each "set"
  474. defines a wall texture for placement, and the integers mean this:
  475.  
  476. 1. x offset from top-left corner of "space" (defined in 4/5) to start
  477. placement of this "part"
  478. 2. y offset
  479. 3. number, from 0 to ____, of the entry in the PNAMES object, which contains
  480. the name from the DIRECTORY, of the wall texture to use...
  481. 4. always 1 ??
  482. 5. always 0 ??
  483.  
  484. Some of the entries have 1 "part", one has 64 "parts"!
  485.  
  486. -------------------
  487. CHAPTER [5]: Pnames
  488. -------------------
  489.  
  490. This is a lookup table for the numbers in TEXTURE1 to reference to an actual
  491. entry in the DIRECTORY which is a wall texture (in the picture format
  492. described later).
  493.  
  494. The middle integer of each 5-integer "set" of a TEXTURE1 entry is something
  495. from 0 to 125 (shareware) or ___ (registered). Number 0 means the first entry
  496. in this PNAMES list, 1 is the second, etc...
  497.  
  498. Every entry in this list is eight bytes, and exactly duplicates an entry in
  499. the DIRECTORY. If a name in PNAMES is not in the DIRECTORY, an error occurs.
  500.  
  501. ---------------------
  502. CHAPTER [6]: Pictures
  503. ---------------------
  504.  
  505. The same format is used for the pictures for items (like medikits), the
  506. frames that make up enemies (like demons), and the wall textures. The
  507. floor/ceiling textures are different!
  508.  
  509. First come four integers:
  510.  
  511. 1. The number of columns of picture data
  512. 2. The number of rows
  513.  
  514. this defines a rectangular "space" or limits for drawing a picture within
  515.  
  516. 3. leftwards x offset from the center to begin the first column
  517. 4. upwards y offset from the bottom to begin the first row
  518.  
  519. To be "centered", #3 is usually about half of the total width. If the picture
  520. had 30 columns, and #3 was 0, then it would be off-center to the right,
  521. especially when the player is standing right in front of it, looking at it.
  522. If a picture has 30 columns, and #4 is 60, it will appear to "float" like a
  523. blue soul-sphere. If #4 equals the number of rows, it will appear to rest on
  524. the ground. If #4 is more than 5 less than #2, the bottom part of the picture
  525. is invisible, cut off by the floor.
  526.  
  527. With walls, #3 (columns/2)-1, and #4 is always (rows)-5. This is because the
  528. walls are drawn consistently within their own space. (There are two integers
  529. in each SIDEDEF which can offset the beginning of a wall)
  530.  
  531. Finally, if #3 and #4 are NEGATIVE integers, then they are the absolute
  532. coordinates from the top-left corner of the screen, to begin drawing the
  533. picture, assuming the VIEW is FULL-SCREEN (the full 320x200). This is only
  534. done with the pictures of the weapons of the doom player - fist, chainsaw,
  535. pistol, shotgun, etc.
  536.  
  537. ======
  538. After these four integers, there are N=(# of columns) long integers (4 bytes
  539. each). These are pointers to the data for each column. The value of the
  540. pointer represents the offset from the first byte of that picture.
  541.  
  542. Each column is composed of some number of BYTES (NOT integers), arranged in
  543. sets, all sets ending in 255=FF hex:
  544.  
  545. The first byte is the row to begin drawing this set at. 0 means whatever
  546. height the #4 upwards-offset describes.
  547. The second byte is how many colored pixels (non-transparent) to draw, going
  548. downwards.
  549. Then follow (# of pixels)+2 bytes, which define what color each pixel is,
  550. using the game palette. The first and last bytes AREN'T drawn, and I don't
  551. know why they are there. Only the middle (# of pixels in this set) are drawn,
  552. starting at the row specified in byte 1 of the set.
  553.  
  554. 255 (hex FF) ends the set, so a column that starts this way is a null column,
  555. all "transparent". Goes to the next column.
  556.  
  557. Thus, transparent areas can be defined for either items or walls (but you
  558. should only use a wall with transparent parts on a SIDEDEF between two
  559. SECTORS):
  560.  
  561. If the picture is 56 wide and 72 tall, and column 1 has a set of 12 pixels
  562. starting at row 13, and another set of 10 starting at row 32, and a third set
  563. of 9 starting at 55, then the pixels at column 1, rows 0-12, 25-31, 42-54,
  564. and 64-71 will all be "transparent".
  565.  
  566. (The data bytes for this might look something like this, in hexadecimal -
  567.  
  568. ... 0d 0c # # # # # # # # # # # # # # FF 20 0a # # # # # # # # # # # # FF 37
  569. 09 # # # # # # # # # # # ff ... next column)
  570.  
  571. Note that all the item and enemy pictures names are in the DIRECTORY between
  572. the S_START and S_END entries, and all the wall textures are all between the
  573. P_START and P_END entries.
  574.  
  575. ---------------------------------------
  576. CHAPTER [7]: Floor and Ceiling Textures
  577. ---------------------------------------
  578.  
  579. This is temporary, speculative...I haven't checked these out much yet...
  580.  
  581. Also, how is the F_SKY1 ceiling "texture" transparent?
  582.  
  583. All the names for these textures are in the DIRECTORY between the F_START and
  584. F_END entries. There is no look-up or meta-structure as with the walls.
  585.  
  586. Each texture is 4096 raw bytes, making a square 64 by 64 pixels, which is
  587. pasted starting in the northwesternmost corner (as determined by the x,y
  588. coordinates and the automap) of a sector.
  589.